package com.example.prom.dangwen.y2023.thread;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//如果一个数组能被切割成一个或多个序列，且每个序列的第一个元素都等于该序列的长度-1，那么这个数组就是"完美数组”，特别规定，空数组也是完美教组.例败，数组[3,3,4,5,2,6,1] 就是一个完美数组，因为它可以分割成以下两个列: [3,3,4,5], [2,6,1]同理，数组[1,9,4,7,0,3,1]也是完美数组，因为它可以分割成: [1,9],[4,7,0,3,1]。而[1],[1,5,2],[3,2,1] 都不是完美数组。现在给您一个数组A，您每次可以删除数组中的一个元素。请问您最少需要多少次操作使A成为完美数组。

import java.util.Arrays;

public class Test6 {
    public static int minOperations(int[] A) {
        Arrays.sort(A); // 对数组进行排序
        int n = A.length;
        int result = 0;
        for (int i = 1; i < n; i++) {
            if (A[i] <= A[i - 1]) {
                result += A[i - 1] - A[i] + 1; // 计算操作次数
                A[i] = A[i - 1] + 1; // 更新当前位置的值
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[] A = {3, 3, 4, 5, 2, 6, 1};
        int minOps = minOperations(A);
        System.out.println("最少操作次数: " + minOps);
    }
}


